﻿using System;
using System.Collections.Generic;

namespace Borg
{
    public interface ITypeStoreReader
    {
        MetaElementCollection<Contract> Contracts { get; }
        MetaElementCollection<Plugin> Plugins { get; }

        IEnumerable<SlotDefinition> SlotDefinitions { get; }
        IEnumerable<ExtensionType> ExtensionTypes { get; }

        IEnumerable<PlugType> PlugTypes { get; }
        IEnumerable<SlotType> SlotTypes { get; }

        bool ContainsPlugin(Uri uri, string name);
        bool ContainsContract(Uri uri, string name);

        MetaElementCollection<Contract> GetContracts(string name);
        MetaElementCollection<Plugin> GetPlugins(string name);

        MetaElementCollection<SlotDefinition> GetSlotDefinitions(string name);
        MetaElementCollection<ExtensionType> GetExtensionTypes(string name);

        MetaElementCollection<PlugType> GetPlugTypes(string name);
        MetaElementCollection<SlotType> GetSlotTypes(string name);
    }
}

